home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib15.dsk
/
VISISORT PLUS- QUICKSORT.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
1KB
|
29 lines
100 HGR : HCOLOR= 3
110 DIM A(100): HOME : VTAB 22: PRINT "CREATING ARRAY": FOR I = 1 TO 100:A(I) = I: NEXT
120 HGR : FOR I = 1 TO 100: HPLOT I,A(I): NEXT
130 HOME : VTAB 22: PRINT "SHUFFLING": FOR I = 1 TO 100:B = INT( RND(1) *100) +1:T = A(B):A(B) = A(I):A(I) = T: NEXT
140 HGR : FOR I = 1 TO 100: HPLOT I,A(I): NEXT
150 N = 100
160 HOME : VTAB 22: PRINT "QUICKSORT": PRINT ""
170 GOSUB 10000
180 PRINT "": HOME : VTAB 22: PRINT "DONE": END
9000 REM QUICKSORT
9001 REM A ARRAY TO SORT
9002 REM N ELEMENTS IN ARRAY
10000 S = 0:F = 1:L = N
10010 M = A( INT((L +F)/2)):I = F:J = L
10020 IF A(I) <M THEN I = I +1: GOTO 10020
10030 IF A(J) >M THEN J = J -1: GOTO 10030
10040 IF I >J THEN 10110
10050 IF I = J THEN 10090
10060 T = A(I):A(I) = A(J):A(J) = T
10070 HCOLOR= 0: HPLOT J,0 TO J,100: HCOLOR= 3: HPLOT J,A(J)
10080 HCOLOR= 0: HPLOT I,0 TO I,100: HCOLOR= 3: HPLOT I,A(I)
10090 I = I +1:J = J -1
10100 IF I < = J THEN 10020
10110 IF I > = L THEN 10130
10120 F(S) = I:L(S) = L:S = S +1
10130 L = J
10140 IF F <L THEN 10010
10150 IF S = 0 THEN RETURN
10160 S = S -1:F = F(S):L = L(S): GOTO 10010